﻿using System;
using System.Collections.Generic;
using Flagwind.Plugins;
using Flagwind.Plugins.Parsers;

namespace Flagwind.Options.Plugins.Parsers
{
	public class OptionParser : Parser
	{
		#region 解析方法

		public override object Parse(ParserContext context)
		{
			if(string.IsNullOrWhiteSpace(context.Text))
				return null;

			var expression = PluginPath.Parse(context.Text);

			if(expression != null)
			{
				object target = context.PluginContext.ApplicationContext.OptionManager.GetOptionValue(expression.Path);

				if(target != null)
					return Reflection.MemberAccess.GetMemberValue<object>(target, expression.Members);
			}

			return null;
		}

		#endregion
	}
}